package com.baizhi.realm;

import com.baizhi.dao.AdminDao;
import com.baizhi.entity.Admin;
import org.apache.catalina.realm.AuthenticatedUserRealm;
import org.apache.shiro.authc.*;
import org.apache.shiro.realm.AuthenticatingRealm;
import org.springframework.beans.factory.annotation.Autowired;

public class AuthenRealm extends AuthenticatingRealm {

        @Autowired
        private AdminDao adminDao;

    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {

    /**
         * doGetAuthenticationInfo 获取认证信息
         * @param token
         * @return
         * @throws AuthenticationException
         */




        //        1.获取用户输入的账号
        UsernamePasswordToken usernamePasswordToken = (UsernamePasswordToken) token;
            String userName=usernamePasswordToken.getUsername();
        //   2.查询数据库 通过用户名
        Admin admin = adminDao.selectByName(userName);
        //     如果不为null 返回一个info对象
            /**
             * 参数1  账号
             * 参数2 密码
             * 参数3 this.getName()
             */
            if (admin!=null){
                return new SimpleAuthenticationInfo(userName,admin.getPassWord(),this.getName());
            }else {
                // 如果数据库查询返回为null 直接返回null  就会报 账号不存在的异常
                return null;
            }

    }

}
